<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright 2015 David Overeem (dovereem@cox.net)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html>

<head>
<title></title>
</head>

<body>

    <h3>Overview</h3>

    <p>The XTCE Tools Java JAR file supports the XTCE technology by providing a
        Graphical User Interface named "xtceview" to view/browse/edit an XTCE
        document.  It also provides a non-graphical underlying "toolkit"
        package to enable application developers to create a specialized
        application that uses an XTCE document, with minimal effort, when
        compared to attempting the task without the toolkit.</p>
    <p>The toolkit does not depend on any graphical
        interfaces.  To complement, the graphical user interface "xtceview"
        contains little to no business logic, preferring to be a graphical
        wrapper around the toolkit package.  To supplement this, a number of
        examples, sample databases, and schema documentation are also included
        in other packages.  All documentation can be accessed from the GUI
        Help Menu, assuming Java FX libraries are available.</p>

    <h3>Key Features</h3>

    <ul>
        <li><p>Supported by the author and tested regularly on Linux, Solaris,
               Mac OS/X, and Windows platforms.</p></li>
        <li><p>Telemetry Parameter access without needing to understand the
               XTCE data model, relationships, references, or other
               complexities.
            </p></li>
        <li><p>Similar Telecommand and Argument access without needing to
               understand the XTCE data model. (Still In Work)</p></li>
        <li><p>Telemetry and Telecommand Container/Packet processing supporting
               most of the XTCE schema complexity, reducing the output access
               to simple flattened accessors such that the user need not
               understand or be aware of the complexities of the XTCE data
               model.</p></li>
        <li><p>Extremely fast optimized searches for Parameters, Telecommands,
               and usage of Parameters in Containers/Packets.</p></li>
        <li><p>Support for Streams and ability to link from Streams to specific
               Containers/Packets.</p></li>
        <li><p>Ability to export from XTCE to other common formats, such as
               CSV, for use in a spreadsheet.</p></li>
        <li><p>Regression tested using Java standard JUnit 4 classes.</p></li>
        <li><p>The toolkit and GUI are both conceived with idea of editing as
               well as viewing in mind, although the edit features are only
               minimally complete.</p></li>
        <li><p>Round trip loading and saving operations while preserving
               comments and formatting.</p></li>
        <li><p>The toolkit and GUI have both been proven on programs that
               utilize both CCSDS Space Data Link and European ECSS Packet
               Utilization (PUS) standards.</p></li>
        <li><p>The toolkit and GUI are regularly used with satellite databases
               that incorporate XInclude and in total are hundreds of megabytes
               in size.  Performance was a strong consideration in the design.
            </p></li>
        <li><p>I18/L10 Internationalization with support currently installed
               for both US English and European French languages.</p></li>
        <li><p>An internal encoder and decoder for Parameters and Arguments
               that can serve as a reference for other implementations of
               commutation and de-commutation capabilities.</p></li>
    </ul>

    <h3>License Model</h3>

    <p>Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.</p>
    <p>You may obtain a copy of the License at
    <p><a href="http://www.apache.org/licenses/LICENSE-2.0">
       Apache 2.0 License</a></p>
    <p>Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.</p>

    <h3>Package Design</h3>

    <p>The packages delivered with this toolkit and user interface relate to
       one another in a layered fashion.  At the core of the toolkit is the
       XTCE Schema, which is converted to Java classes by the JAXB code
       generation tool.  These raw classes are utilized by the "toolkit"
       package to provide a simpler and more intuitive interface.  The GUI
       application (org.omg.space.xtce.ui.XTCEViewer) class contains only
       graphical widgets and callbacks, which use the toolkit as the basis for
       business logic.  A number of additional "code examples" help to further
       illustrate basic usage of the toolkit API to perform common functions,
       using an XTCE document as the database.</p>

    <center>
        <img src="../../../../../../packageoverview.png"
             alt="Java Package Overview Diagram">
    </center>

    <p>The Application Programming Interface is documented using the standard
       Javadoc interface and can be linked to Integrated Development
       Environments by supplying them with the XTCETools.jar file and the
       internal location of the Javadoc files.  These can be found inside the
       jar file at org/xtce/toolkit/doc/index.html.  This is the
       starting point of the pages being viewed here.</p>

    <h3>Testing</h3>

    <p>The toolkit API is tested using the standard JUnit 4.10 package.  The
       tests operate both at a class level where appropriate and also at a
       functional level.  In order to support functional testing, several
       example XTCE database files are included in the package.  A couple of
       these serve as examples that can be viewed using the GUI from the File
       Menu at item "Open Example Database".  Others are not shown and are
       used exclusively for the JUnit testing.  The two example databases are
       named "BogusSAT" and "GovSat".  These demonstrate CCSDS, ECSS PUS, and
       basic "onboard table" definitions for Telemetry Packets and
       Telecommands.  In addition to test database example files, there are
       also test binary data packet files to exercise the data decoding
       capabilities of the toolkit.</p>

    <h3>Extendability</h3>

    <p>The toolkit permits Classes to be added to the package using the Java
       Classpath.  This enables programs to implement program-specific
       implementations of certain elements of the handling of XTCE documents
       and database files that are compliant with the XTCE specification.</p>

    <p>At present, a list of these extension interfaces includes:</p>

    <ul>
        <li><p>XTCEAbsoluteTimeType - This class is an interface for
               implementing a program specific AbsoluteTimeParameterType or
               AbsoluteTimeArgumentType (both are applicable for the same
               class).  Two examples are delivered in the toolkit, one for
               POSIX Time (XTCEPosixTimeHandler) and one for CCSDS CUC Time
               (XTCECcsdsCucTimeHandler).  Both are registered by default and
               any new handlers registered take priority over the existing
               ones.</p></li>
        <li><p>XTCEDatabaseExporter - This class is an interface for
               implementing a custom exporter for Parameters, Containers, and
               Telecommands.  An example implementation in the toolkit is the
               CSV Exporter (XTCEDatabaseExporterCsv).</p></li>
    </ul>

</body>

</html>
